/*
 ***************************************************************************************
 * EP for web developers.Supported By Junxworks
 * @Title:  BatchUtils.java   
 * @Package io.github.junxworks.junx.core.util   
 * @Description: (用一句话描述该文件做什么)   
 * @author: Administrator
 * @date:   2024年1月4日 下午2:57:33   
 * @version V1.0 
 * @Copyright: 2024 Junxworks. All rights reserved. 
 * 注意：
 *  ---------------------------------------------------------------------------------- 
 * 文件修改记录
 *     文件版本：         修改人：             修改原因：
 ***************************************************************************************
 */
package io.github.junxworks.junx.core.util;

import java.util.List;
import java.util.function.Consumer;

/**
 * 批处理工具类
 *
 * @ClassName:  BatchUtils
 * @author: Michael
 * @date:   2024年1月4日 下午2:57:33
 * @since:  v1.0
 */
public class BatchUtils {
	
	/**
	 * Batch handle.
	 *
	 * @param <T> the generic type
	 * @param objs the objs
	 * @param batchSize the batch size
	 * @param consumer the consumer
	 */
	public static <T> void batchHandle(List<T> objs, int batchSize, Consumer<List<T>> consumer) {
		for (int page = 1, index = 0, len = objs.size(); index < len; page++) {
			int toIndex = page * batchSize;
			if (toIndex >= len) {
				toIndex = len;
			}
			consumer.accept(objs.subList(index, toIndex));
			index = toIndex;
		}
	}
}
